<?php
/**
 * Generate the captcha
 * 
 * This function builds the image
 * 
 * @return image Return a image to output to brownser
 */
function genCaptcha()
{
	$image = imagecreatetruecolor(150, 35);
	$code = substr(sha1(mt_rand()), 17, 6); 
	$_SESSION['tcaptcha'] = $code;
	$_SESSION['havecaptcha'] = true;
	
	$width = imagesx($image); 
	$height = imagesy($image);
	
	$black = imagecolorallocate($image, 0, 0, 0); 
	$white = imagecolorallocate($image, 255, 255, 255); 
	$red = imagecolorallocatealpha($image, 255, 0, 0, 75); 
	$green = imagecolorallocatealpha($image, 0, 255, 0, 75); 
	$blue = imagecolorallocatealpha($image, 0, 0, 255, 75); 
		
	imagefilledrectangle($image, 0, 0, $width, $height, $white); 
	
	imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $red); 
	imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $green); 
	imagefilledellipse($image, ceil(rand(5, 145)), ceil(rand(0, 35)), 30, 30, $blue); 
		
	imagefilledrectangle($image, 0, 0, $width, 0, $black); 
	imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $black); 
	imagefilledrectangle($image, 0, 0, 0, $height - 1, $black); 
	imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $black); 
	
	imagestring($image, 10, intval(($width - (strlen($code) * 9)) / 2),  intval(($height - 15) / 2), $code, $black);
		
	header('Content-type: image/jpeg');
		
	imagejpeg($image);
		
	imagedestroy($image);		
}

/**
 * Validate the answer
 * 
 * Validate if the user send the correct answer
 * 
 * @param $string The string written by the user
 * @return bool true if the user written the correct answer, false otherwise
 */
function validateCaptcha($string) {
	if ($_SESSION["tcaptcha"] == $string) {
		return(true);
	} else {
		return(false);
	}
}

function genCaptchaHTML() {
	return('<input type="text" id="captcha" name="captcha" class="inputbox required" /> 
	        <br /><img src="' . JURI::base() . 'index.php?option=com_jhtraq&view=captcha" >'); 
}	 
